package com.ssm.service;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.springframework.web.multipart.MultipartFile;

import com.ssm.bean.MaterialInfo;
import com.ssm.util.ExcelException;

/**
 * @author ZhaoXianming
 * @Description 
 * @date 2020年3月16日
 */
public interface MaterialInfoService
{
	/**
	 * @Description
	 * @param params
	 * @return List<MaterialInfo>
	 */
	public List<MaterialInfo> selectAllMaterialInfoWithDev(Map<String,Object> params);
	
    /**
     * 获取物料信息表中所有的物料信息记录数量
     */
    public int selectAllMaterialInfoCount();

    /**
     * 新增物料信息
     */
    public void insertOrUpdateMaterialInfo(MaterialInfo materialInfo);

    /**
     * @Description 解绑rfid卡
     * @param materialCode 
     * void
     */
    public void deleteRfidCard(String materialCode);
    
    /**
     * @Description 绑定rfid卡
     * @param materialCode 
     * @param rfidCardNumber 
     * void
     */
    public void bindRfidCard(String materialCode, String rfidCardNumber);
    
    /**
     * 删除物料信息，不删除ERP同步数据
     * @throws Exception 
     * 
     */
    public String deleteMaterialBaseInfo(List<String> delList) throws Exception;

    /**
     * 更新物料信息
     * 
     * @param materialInfo
     */
    public void updateMaterialInfo(MaterialInfo materialInfo);

    /**
     * 根据物料编码得到物料的所有信息
     * @param materialCode
     * @return
     */
    public MaterialInfo selectMaterialByCode(String materialCode);

    /**
     * 根据物料编码判断物料是否重复
     */
    public boolean isMaterialRepeat(String materialCode);
    
    /**
     * 判断RFID卡号是否已经绑定
     */
    public boolean isRfidCardNumberRepeat(String rfidCardNumber);
    
    /**
     * 根据查询条件对物料信息进行查询查一次
     */
	public List<MaterialInfo> selectTopMaterialInfoByParams(
			Map<String, Object> params);
	
	 /**
     * 根据物料名称、物料规格、物料型号获取到物料编码
     * @param materialName
     * @param materialSpec
     * @param materialModel
     * @return
     */
    List<String> selectMaterialByParam(@Param("materialName") String materialName,@Param("materialSpec") String materialSpec,@Param("materialModel") String materialModel);

    /**
     * @Description Excel导入物料信息
     * @param file
     * @throws ExcelException void
     */
    public void saveFileToMysql(MultipartFile file) throws ExcelException;
}
